package com.ruiysoft.controller.mdse.vo;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.ruiysoft.controller.integralmdse.vo.IntegralMdseVo;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.validation.annotation.Validated;

import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * WxSkuDtoVo
 */
@Validated
@javax.annotation.Generated(value = "io.swagger.codegen.languages.SpringCodegen", date = "2019-04-27T03:44:58.202+08:00")

public class WxSkuDtoVo   {
  private Long spuId = null;

  @JsonProperty("skuId")
  private Long skuId = null;

  @JsonProperty("skuName")
  private String skuName = null;

  @JsonProperty("unitPrice")
  private String unitPrice = null;

  @JsonProperty("listPrice")
  private String listPrice = null;

  @JsonProperty("info")
  private String info = null;

  @JsonProperty("quantity")
  private Integer quantity = null;

  @JsonProperty("integralMdse")
  private IntegralMdseVo integralMdse = null;

  @JsonProperty("photos")
  @Valid
  private List<SkuPhoto> photos = null;

  @JsonProperty("detailPhotos")
  @Valid
  private List<SkuPhoto> detailPhotos = null;

  @JsonProperty("status")
  private Integer status = null;
  @JsonProperty("salesVolume")
  private Long salesVolume;

  @JsonProperty("RuleValues")
  @Valid
  private List<WxRuleValueVo> ruleValues = null;

  public WxSkuDtoVo salesVolume(Long salesVolume) {
    this.salesVolume = salesVolume;
    return this;
  }


    public WxSkuDtoVo skuId(Long skuId) {
        this.skuId = skuId;
        return this;
    }

  /**
   * Get skuId
   * @return skuId
  **/
  @ApiModelProperty(example = "1", value = "")


  public Long getSkuId() {
    return skuId;
  }

  public void setSkuId(Long skuId) {
    this.skuId = skuId;
  }

  public WxSkuDtoVo skuName(String skuName) {
    this.skuName = skuName;
    return this;
  }

  /**
   * spuName+规格值
   * @return skuName
  **/
  @ApiModelProperty(example = "手机 红色 32G", value = "spuName+规格值")


  public String getSkuName() {
    return skuName;
  }

  public void setSkuName(String skuName) {
    this.skuName = skuName;
  }

  public WxSkuDtoVo unitPrice(String unitPrice) {
    this.unitPrice = unitPrice;
    return this;
  }

  /**
   * 销售价
   * @return unitPrice
  **/
  @ApiModelProperty(example = "1", value = "销售价")


  public String getUnitPrice() {
    return unitPrice;
  }

  public void setUnitPrice(String unitPrice) {
    this.unitPrice = unitPrice;
  }

  public WxSkuDtoVo listPrice(String listPrice) {
    this.listPrice = listPrice;
    return this;
  }

  /**
   * 市场价
   * @return listPrice
  **/
  @ApiModelProperty(example = "1", value = "市场价")


  public String getListPrice() {
    return listPrice;
  }

  public void setListPrice(String listPrice) {
    this.listPrice = listPrice;
  }

  public WxSkuDtoVo info(String info) {
    this.info = info;
    return this;
  }

  /**
   * 商品详情介绍
   * @return info
  **/
  @ApiModelProperty(example = "详情介绍！！！！！", value = "商品详情介绍")


  public String getInfo() {
    return info;
  }

  public void setInfo(String info) {
    this.info = info;
  }

  public WxSkuDtoVo quantity(Integer quantity) {
    this.quantity = quantity;
    return this;
  }

    public Long getSalesVolume() {
        return salesVolume;
    }

    public void setSalesVolume(Long salesVolume) {
        this.salesVolume = salesVolume;
    }

    /**
   * 库存
   * @return quantity
  **/
  @ApiModelProperty(example = "1", value = "库存")


  public Integer getQuantity() {
    return quantity;
  }

  public void setQuantity(Integer quantity) {
    this.quantity = quantity;
  }

  public WxSkuDtoVo integralMdse(IntegralMdseVo integralMdse) {
    this.integralMdse = integralMdse;
    return this;
  }

  /**
   * Get integralMdse
   * @return integralMdse
  **/
  @ApiModelProperty(value = "")

  @Valid

  public IntegralMdseVo getIntegralMdse() {
    return integralMdse;
  }

  public void setIntegralMdse(IntegralMdseVo integralMdse) {
    this.integralMdse = integralMdse;
  }

  public WxSkuDtoVo photos(List<SkuPhoto> photos) {
    this.photos = photos;
    return this;
  }

  public WxSkuDtoVo addPhotosItem(SkuPhoto photosItem) {
    if (this.photos == null) {
      this.photos = new ArrayList<SkuPhoto>();
    }
    this.photos.add(photosItem);
    return this;
  }

  /**
   * sku图片轮播图
   * @return photos
  **/
  @ApiModelProperty(value = "sku图片轮播图")

  @Valid

  public List<SkuPhoto> getPhotos() {
    return photos;
  }

  public void setPhotos(List<SkuPhoto> photos) {
    this.photos = photos;
  }

  public WxSkuDtoVo detailPhotos(List<SkuPhoto> detailPhotos) {
    this.detailPhotos = detailPhotos;
    return this;
  }

  public WxSkuDtoVo addDetailPhotosItem(SkuPhoto detailPhotosItem) {
    if (this.detailPhotos == null) {
      this.detailPhotos = new ArrayList<SkuPhoto>();
    }
    this.detailPhotos.add(detailPhotosItem);
    return this;
  }

  /**
   * sku图片
   * @return detailPhotos
  **/
  @ApiModelProperty(value = "sku图片")

  @Valid

  public List<SkuPhoto> getDetailPhotos() {
    return detailPhotos;
  }

  public void setDetailPhotos(List<SkuPhoto> detailPhotos) {
    this.detailPhotos = detailPhotos;
  }

  public WxSkuDtoVo status(Integer status) {
    this.status = status;
    return this;
  }

  /**
   * 上下架状态（1，上架，2，下架）
   * @return status
  **/
  @ApiModelProperty(value = "上下架状态（1，上架，2，下架）")


  public Integer getStatus() {
    return status;
  }

  public void setStatus(Integer status) {
    this.status = status;
  }

  public WxSkuDtoVo ruleValues(List<WxRuleValueVo> ruleValues) {
    this.ruleValues = ruleValues;
    return this;
  }

  public WxSkuDtoVo addRuleValuesItem(WxRuleValueVo ruleValuesItem) {
    if (this.ruleValues == null) {
      this.ruleValues = new ArrayList<WxRuleValueVo>();
    }
    this.ruleValues.add(ruleValuesItem);
    return this;
  }

  /**
   * 所属spu拥有规格-规格值
   * @return ruleValues
  **/
  @ApiModelProperty(value = "所属spu拥有规格-规格值")

  @Valid

  public List<WxRuleValueVo> getRuleValues() {
    return ruleValues;
  }

  public void setRuleValues(List<WxRuleValueVo> ruleValues) {
    this.ruleValues = ruleValues;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    WxSkuDtoVo wxSkuDtoVo = (WxSkuDtoVo) o;
    return Objects.equals(this.skuId, wxSkuDtoVo.skuId) &&
        Objects.equals(this.skuName, wxSkuDtoVo.skuName) &&
        Objects.equals(this.unitPrice, wxSkuDtoVo.unitPrice) &&
        Objects.equals(this.listPrice, wxSkuDtoVo.listPrice) &&
        Objects.equals(this.info, wxSkuDtoVo.info) &&
        Objects.equals(this.quantity, wxSkuDtoVo.quantity) &&
        Objects.equals(this.integralMdse, wxSkuDtoVo.integralMdse) &&
        Objects.equals(this.photos, wxSkuDtoVo.photos) &&
        Objects.equals(this.detailPhotos, wxSkuDtoVo.detailPhotos) &&
        Objects.equals(this.status, wxSkuDtoVo.status) &&
        Objects.equals(this.ruleValues, wxSkuDtoVo.ruleValues);
  }

  @Override
  public int hashCode() {
    return Objects.hash(skuId, skuName, unitPrice, listPrice, info, quantity, integralMdse, photos, detailPhotos, status, ruleValues);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class WxSkuDtoVo {\n");

    sb.append("    skuId: ").append(toIndentedString(skuId)).append("\n");
    sb.append("    skuName: ").append(toIndentedString(skuName)).append("\n");
    sb.append("    unitPrice: ").append(toIndentedString(unitPrice)).append("\n");
    sb.append("    listPrice: ").append(toIndentedString(listPrice)).append("\n");
    sb.append("    info: ").append(toIndentedString(info)).append("\n");
    sb.append("    quantity: ").append(toIndentedString(quantity)).append("\n");
    sb.append("    integralMdse: ").append(toIndentedString(integralMdse)).append("\n");
    sb.append("    photos: ").append(toIndentedString(photos)).append("\n");
    sb.append("    detailPhotos: ").append(toIndentedString(detailPhotos)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    ruleValues: ").append(toIndentedString(ruleValues)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }

  public Long getSpuId() {
    return spuId;
  }

  public void setSpuId(Long spuId) {
    this.spuId = spuId;
  }
}

